package com.huiminpay.transaction.api;

import com.huiminpay.common.cache.domain.BusinessException;
import com.huiminpay.transaction.api.dto.PayChannelDTO;
import com.huiminpay.transaction.api.dto.PayChannelParamDTO;
import com.huiminpay.transaction.api.dto.PlatformChannelDTO;

import java.util.List;

/**
 * Created with IntelliJ IDEA.
 *
 * @Author: 有点儿意思
 * @Description:
 */
public interface PayChannelService {

    /**
     * 获取服务类型列表
     * @return 服务类型列表
     * @throws BusinessException
     */
    List<PlatformChannelDTO>  queryPlatformChannel() throws BusinessException;


    /**
     * 应用绑定服务类型
     * @param appId 应用id
     * @param platChannelCode 服务类型编码
     */
    void insertAppPlatformChannel(String appId,String platChannelCode);

    /**
     * 查询应用是否绑定了某个服务类型
     * @param appId 应用id
     * @param platChannelCode 服务类型编码
     * @return 1 已绑定 否则返回 0
     */
    Integer queryAppPlatformChannel(String appId,String platChannelCode);


    /**
     * 根据服务类型编码查询原始支付渠道
     * @param platformChannelCode 支付渠道编码
     * @return List原始支付渠道
     */
    List<PayChannelDTO> queryPayChannel(String platformChannelCode);

    /**
     * 保存支付渠道 参数
     * @param payChannelParamDTO  支付渠道封装对象
     * @throws BusinessException
     */
    void insertPayChannel(PayChannelParamDTO payChannelParamDTO) throws BusinessException;

    /**
     * 获取支付渠道参数列表
     * @param appId 应用id
     * @param platformChannel 服务类型编码
     * @return 支付渠道参数列表
     */
    List<PayChannelParamDTO> queryPayChannelParams(String appId,String platformChannel);


    /**
     * 获取某个应用下的支付渠道参数
     * @param appId 应用id
     * @param platformChannel 服务类型编码
     * @param payChannel 支付渠道
     * @return 支付渠道参数
     */
    PayChannelParamDTO queryPayChannelParamByAppPlatformChannel(String appId,String platformChannel,String payChannel);




    }
